package main

import "fmt"

//在调用一个函数时，会给该函数分配一个新的空间，编译器会通过自身的处理让这个新的空间和其它的栈空间区分开来
//在每个函数对应的栈中，数据空间是独立的，不会混淆
//当一个函数调用完毕（执行完毕）后，程序会销毁这个函数对应的栈空间
func getSum(n1 int, n2 int) int {
	sum := n1 + n2
	fmt.Println("getSum sum=", sum)
	return sum
}

//如果返回多个值时，在接收时，希望忽略某个返回值，则使用_符号表示占位忽略
//如果返回值只有一个，（返回值类型列表）可以不写()
func getSumAndSub(n1 int, n2 int) (int, int) {
	sum := n1 + n2
	sub := n1 - n2
	return sum, sub
}
func main() {
	sum := getSum(10, 20)
	fmt.Println("main sum=", sum)

	res1, res2 := getSumAndSub(1, 2)
	_, res3 := getSumAndSub(2, 3)
	fmt.Printf("res1=%v res2=%v\n", res1, res2)
	fmt.Println("res3=", res3)
}
